@echo off
REM 客户管理模块测试运行脚本 (Windows)
REM 使用方法：run-customer-tests.bat [选项]
REM
REM 选项：
REM   all          - 运行所有测试（默认）
REM   repository   - 仅运行 Repository 测试
REM   service      - 仅运行 Service 测试
REM   controller   - 仅运行 Controller 测试
REM   integration  - 仅运行集成测试
REM   coverage     - 运行测试并生成覆盖率报告

setlocal

echo ========================================
echo   客户管理模块测试运行脚本
echo ========================================
echo.

set TEST_TYPE=%1
if "%TEST_TYPE%"=="" set TEST_TYPE=all

if "%TEST_TYPE%"=="repository" goto test_repository
if "%TEST_TYPE%"=="service" goto test_service
if "%TEST_TYPE%"=="controller" goto test_controller
if "%TEST_TYPE%"=="integration" goto test_integration
if "%TEST_TYPE%"=="coverage" goto test_coverage
if "%TEST_TYPE%"=="all" goto test_all

echo 错误：未知的测试类型 '%TEST_TYPE%'
echo.
echo 使用方法：
echo   %0 [选项]
echo.
echo 选项：
echo   all          - 运行所有测试（默认）
echo   repository   - 仅运行 Repository 测试
echo   service      - 仅运行 Service 测试
echo   controller   - 仅运行 Controller 测试
echo   integration  - 仅运行集成测试
echo   coverage     - 运行测试并生成覆盖率报告
exit /b 1

:test_repository
echo 运行 Repository 层测试...
call mvnw.cmd test -Dtest=CustomerRepositoryTest
goto check_result

:test_service
echo 运行 Service 层测试...
call mvnw.cmd test -Dtest=CustomerServiceTest
goto check_result

:test_controller
echo 运行 Controller 层测试...
call mvnw.cmd test -Dtest=CustomerControllerTest
goto check_result

:test_integration
echo 运行集成测试...
call mvnw.cmd test -Dtest=CustomerIntegrationTest
goto check_result

:test_coverage
echo 运行所有测试并生成覆盖率报告...
call mvnw.cmd clean test jacoco:report
if %ERRORLEVEL% EQU 0 (
    echo.
    echo ✓ 测试完成！
    echo ✓ 覆盖率报告已生成：target\site\jacoco\index.html
)
goto check_result

:test_all
echo 运行所有客户管理模块测试...
call mvnw.cmd test -Dtest=Customer*Test
goto check_result

:check_result
echo.
if %ERRORLEVEL% EQU 0 (
    echo ========================================
    echo   ✓ 所有测试通过！
    echo ========================================
) else (
    echo ========================================
    echo   ✗ 测试失败！
    echo ========================================
    exit /b 1
)

endlocal

